#include<bits/stdc++.h>
using namespace std;

class Node{
public:
	int val,ti;
	Node* left;
	Node* right;
	Node(int val_){
		val=val_;
		ti=1;
		left=nullptr;
		right=nullptr;
	}
	Node(int val_,Node* left_,Node* right_){
		val=val_;left=left_;
		right=right_;
		ti=1;
	}
};


Node* insert(Node* root,const int val){
	if(!root){
		return new Node{val};
	}
	else if(root->val==val){
		++root->ti;
	}
	else if(root->val>val){
		root->left=insert(root->left,val);
	}
	else if(root->val<val){
		root->right=insert(root->right,val);
	}
	return root;
}

int n,tag,num;
int sum=0;
bool bt;

void f(Node* root){
	if(!root) return;
	f(root->left);
	if(bt) return;
	if(tag==1&&root->val>=num){
		bt=true;
		return;
	}
	if(tag==2&&sum+root->ti>=num){
		bt=true;
		cout<<root->val;
		return;
	}
	sum+=root->ti;
	f(root->right);
}

int main(){
	Node* root=nullptr;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>tag>>num;
		sum=0;
		bt=false;
		if(tag==5){
			root=insert(root,num);
			continue;
		}
		else if(tag==1){
			f(root);
			cout<<sum+1;
		}
		else if(tag==2){
			f(root);
		}
		else if(tag==3){
			auto p=root;
			int ans=-2147483647;
			while(p!=nullptr){
				if(p->val<num){
					ans=max(ans,p->val);
					p=p->right;
				}
				else{
					p=p->left;
				}
			};
			cout<<ans;
		}
		else if(tag==4){
			auto p=root;
			int ans=2147483647;
			while(p!=nullptr){
				if(p->val>num){
					ans=min(ans,p->val);
					p=p->left;
				}
				else{
					p=p->right;
				}
			};
			cout<<ans;			
		}
		cout<<endl;
	}
	return 0;
}




//#include<bits/stdc++.h>
//using namespace std;
//
//set<int> myset;	
//int tag,num,n;
//int main(){
//	cin>>n;
//	for(int i=0;i<n;i++){
//		cin>>tag>>num;
//		auto p=myset.begin();
//		int j;
//		if(tag==5){
//			myset.insert(num);
//		}
//		else if(tag==1){
//			for(j=1;*p<num;p++,j++){
//				
//			}
//			cout<<j;
//		}
//		else if(tag==2){
//			for(j=1;j<num;p++,j++){
//				
//			}
//			cout<<*p;
//		}
//		else if(tag==3){
//			while(p!=myset.end()&&*p<num){
//				p++;
//			}
//			if(p==myset.begin()) cout<<"-2147483647";
//			else cout<<*(--p);
//		}
//		else if(tag==4){
//			if( *(--myset.end())<=num ){
//				cout<<"2147483647";
//				continue;
//			}
//			while(p!=myset.end()&&*p<=num){
//				p++;
//			}
//			cout<<*p;			
//		}
//		cout<<endl;
//	}
//	return 0;
//}
